https://leetcode.cn/problems/subarray-sum-equals-k/description/
class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
        int n=nums.size(),sum;
        unordered_map<int,int> hash;

        int ret=0;
        //0-i的和为k，[0,-1]区间不存在，也要统计
        hash[0]++;
        //前缀和
        for(int i=0;i<n;i++)
        {
            sum=sum+nums[i];

            //以i位置为结尾，寻找0:i-1和为nums[i]-k
            if(hash.count(sum-k))
                ret+=hash[sum-k];

            //必须在寻找i-1之后再加入
            hash[sum]++;
        }
        return ret;

    }
};